package com.edu.exam.enums.grading;

import com.edu.exam.enums.core.BaseEnum;

/**
 * 分析类型枚举
 *
 * @author 系统生成
 * @version 1.0
 * @since 2025-11-10
 */
public enum AnalysisType implements BaseEnum {

    /**
     * 趋势分析
     */
    TREND_ANALYSIS("TREND_ANALYSIS", "趋势分析"),

    /**
     * 分布分析
     */
    DISTRIBUTION_ANALYSIS("DISTRIBUTION_ANALYSIS", "分布分析"),

    /**
     * 对比分析
     */
    COMPARISON_ANALYSIS("COMPARISON_ANALYSIS", "对比分析"),

    /**
     * 相关性分析
     */
    CORRELATION_ANALYSIS("CORRELATION_ANALYSIS", "相关性分析"),

    /**
     * 异常值分析
     */
    OUTLIER_ANALYSIS("OUTLIER_ANALYSIS", "异常值分析"),

    /**
     * 聚类分析
     */
    CLUSTER_ANALYSIS("CLUSTER_ANALYSIS", "聚类分析"),

    /**
     * 预测分析
     */
    PREDICTIVE_ANALYSIS("PREDICTIVE_ANALYSIS", "预测分析"),

    /**
     * 回归分析
     */
    REGRESSION_ANALYSIS("REGRESSION_ANALYSIS", "回归分析"),

    /**
     * 因子分析
     */
    FACTOR_ANALYSIS("FACTOR_ANALYSIS", "因子分析"),

    /**
     * 综合评价分析
     */
    COMPREHENSIVE_EVALUATION("COMPREHENSIVE_EVALUATION", "综合评价分析"),

    /**
     * 差异分析
     */
    DIFFERENCE_ANALYSIS("DIFFERENCE_ANALYSIS", "差异分析"),

    /**
     * 效能分析
     */
    EFFICIENCY_ANALYSIS("EFFICIENCY_ANALYSIS", "效能分析");

    private final String code;
    private final String description;

    AnalysisType(String code, String description) {
        this.code = code;
        this.description = description;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getDescription() {
        return description;
    }

    /**
     * 从代码创建枚举实例
     *
     * @param code 枚举代码
     * @return 对应的枚举实例
     */
    public static AnalysisType fromCode(String code) {
        for (AnalysisType type : values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        throw new IllegalArgumentException("Unknown analysis type code: " + code);
    }

    @Override
    public String toString() {
        return description;
    }
}